sql="select * from 数据表 where 变量 in(字段名)"

来源:百度知道 编辑:UC知道 时间:2024/06/08 02:17:32
各位高手,
字段名里是类别(字符型),
如第一条记录是1,2,3,4
第二条记录是2,3
第三条记录是1
第四条记录是1,3

我想用把它分类显示出来,如果 变量是"1",那就显示字段名有"1"的第1条、第3条和第4条记录

可是我用sql="select * from 数据表 where 变量 in(字段名)"


a1="1"
sql="select * from 数据表 where '"&a1&"' in(字段名)"

只显示第三条记录!

方法1
这个需要些存储过程来实现
大致的思路是这样的
1 遍历表的列名
2 将数据存入零时表1中
3 按照查出来的列名循环从零时表中查询这列中是不是有你要的那个数据,有的话,这条数据保留
4 查出的数据存入零时表2中,并且从零时表1中删除
5 零时表2中的内容就是你所要的所有数据
每一步关键点说明
1 遍历的话给一个小例子
select name from syscolumns where id = object_id(’表名’)
2 略。
3 需要开游标(这个网上很多)
ps:如果字段比较少的话,你可以不用写循环,直接罗列就可以了
4 就是3的insert操作变成delete
5 得到结果

方法2
据例子说明
如第一条记录是1,2,3,4
第二条记录是2,3
第三条记录是1
第四条记录是1,3
给每条记录上一个识别字
建立一个零时表2个字段 sysid columvalues
将每列的值和这列的识别字分别插入
内容如
r1 1
r1 2
r1 3
r1 4
r2 2
r2 3
r3 1
r4 1
r4 3
然后查询这个表获得内容columvalues是1的行识别字(distict一下)
然后。。应该很清楚了八:)

用charindex函数:
a1="1"
sql="select * from 数据表 where '"&a1&"' in(字段名)"

a1="1"
select * from 数据表 where
字段名 In
(
select 字段名 From 数据表 where charindex(a1,字段名)>0
)

In语句的用法楼主需要